package com.whfc.mach.manager;

import com.whfc.mach.dto.*;

import java.util.List;
import java.util.Set;

/**
 * 设备公共服务层
 *
 * @author : qzexing
 * @version : 1.0
 * @date : 2021-02-20 15:56
 */
public interface MachMgr {

    /**
     * 设备绑定
     *
     * @param machId   设备ID
     * @param deviceId 设备ID
     * @param userId   绑定的用户ID
     * @param userName 绑定的用户姓名
     */
    void bind(Integer machId, Integer deviceId, Integer userId, String userName);

    /**
     * 设备解绑
     *
     * @param machId
     * @param userId
     * @param userName
     */
    void unbind(Integer machId, Integer userId, String userName);

    /**
     * 大屏设备数量统计
     *
     * @param machList        设备列表
     * @param machTypeNameSet 设备类型名称
     * @return 设备数量统计
     */
    BoardMachNumDTO getBoardMachNumDTO(List<AppBoardMachDTO> machList, Set<String> machTypeNameSet);

    /**
     * 计算剩余油量
     *
     * @param machId 设备ID
     * @param oilPos 当前油位
     * @return 当前油量(L)
     */
    Oil computeRemainOil(Integer machId, Integer oilPos);

    /**
     * 计算剩余油量
     *
     * @param machInfo
     * @param oilPos
     * @return
     */
    Oil computeRemainOil(AppMachInfo machInfo, Integer oilPos);

    /**
     * 更新剩余油量
     *
     * @param machId
     * @param oilList
     * @return
     */
    List<Oil> computeRemainOil(Integer machId, List<Oil> oilList);

    /**
     * 更新剩余油量
     *
     * @param machInfo
     * @param oilList
     * @return
     */
    List<Oil> computeRemainOil(AppMachInfo machInfo, List<Oil> oilList);

    /**
     * 获取油箱标定关系表
     *
     * @param machId    设备ID
     * @param oilHeight 油箱高度
     * @param oilVolume 油箱容积
     * @return
     */
    AppMachOilLookup getOilLookup(Integer machId, Double oilHeight, Double oilVolume);

    /**
     * 刷新油位标定结果数据
     *
     * @param machId
     * @param oilSheetDTOList
     */
    void refreshOilSheet(Integer machId, List<AppMachOilSheetDTO> oilSheetDTOList);

    /**
     * 获取油位标定结果数据
     *
     * @param machId
     * @return
     */
    List<AppMachOilSheetDTO> getOilSheet(Integer machId);
}
